import { defineStore } from 'pinia'
import contentApi from '../api/content'

const useHeader = defineStore('useStore', {
    state: (): any => ({
        // 标题
        headerTitle: '',
        // 订阅人数
        subscribeData: '',
        // 播放量
        playData: '',
        // 展开的详情
        headerDetail: '',
        // 头像
        headerImg: '',
        // 是否是vip
        isVIP: '',
        // ----------------------- 节目
        // 节目列表
        // 节目名称
        programName: [],
        // 节目总数
        allNum: '',
        // 主播信息的id
        id: '',
        // -------------------------主播信息
        // 主播头像
        userHeader: '',
        // 主播的名称
        userName: '',
        // 主播信心描述
        userCont: '',
        // 主播的粉丝量
        userFollower: '',
        // 等级
        level: '',
        // --------------------------- 主播作品
        worksData: [],
        // ---------------------------评论
        commentList: [],
        // ----------------------------相似专辑
        albumList: [],
        // -----------------------------猜你喜欢
        guessLike: [],
        // 翻页
        searchPage: 1,
    }),

    actions: {
        // 发请求获取数据
        async getHeaderData(id: number) {

            let result = await contentApi.reqGetHeader(id)
            // console.log(result);
            // 标题
            this.headerTitle = result.albumDetailInfo.albumInfo.title
            // 订阅人数
            let subscribe = result.albumDetailInfo.statCountInfo.subscribeCount
            // 播放量
            let play = result.albumDetailInfo.statCountInfo.playCount
            //  展开的详情
            this.headerDetail = result.albumRichInfo.richIntro
            // 头像
            this.headerImg = result.albumDetailInfo.albumInfo.cover
            // 是否是vip
            this.isVIP = result.isVipPrivileges
            // 主播信息的id
            this.id = result.anchorId

            



            // 判断订阅人数
            if (subscribe < 100000000) {
                let num = Number(subscribe) / 10000
                this.subscribeData = num.toFixed(2) + '万'
            }
            // 判断播放量
            if (play > 100000000) {
                let num = Number(play) / 100000000
                this.playData = num.toFixed(2) + '亿'

            }

            // 修改图片大小
                // 匹配img
                let regex = /<img[^>]*>/g

                // 找到符合的字符串并修改修改
                this.headerDetail = this.headerDetail.replace(regex, function (match: any) {
                    return match.replace(/\s/, ' style="width:345px;" ')
                })

            // ----------------------需要主播的数据，所以要在请求回来数据之后发请求
            // 调用获取主播信息的请求
            this.getUserData()
            // 获取主播作品
            this.getWorksData()
            // 相关专辑
            this.getAlbumData()
        },
        // 发请求获取节目列表
        async getProgramList(albumId: number, asc: any, v: number) {
            let result = await contentApi.reqGetProgram(albumId, asc, v)
            // 节目列表
            this.programName = result.trackDetailInfos
            // 节目总数
            this.allNum = result.totalCount

        },
        // 获取主播信息
        async getUserData() {
            let result = await contentApi.reqGetAnchor(this.id)
            // 主播的头像
            this.userHeader = result.userInfo.logo
            // 主播的名称
            this.userName = result.userInfo.nickname
            // 主播信心描述
            this.userCont = result.userInfo.personalSignature
            // 主播等级
            this.level = result.userInfo.anchorGrade

            // 主播的粉丝量
            let num = result.statCountInfo.followerCount
            if (num < 100000000) {
                let follower = Number(num) / 10000
                this.userFollower = follower.toFixed(2) + '万'
            }
        },
        // 获取主播作品
        async getWorksData() {

            let result = await contentApi.reqGetWorks(this.id)
            // 图
            this.worksData = result.albumBriefDetailInfos

        },
        // 获取评论
        async getCommentData(albumId: number, v: number) {
            let result = await contentApi.reqGetComment(albumId, v)
            // 评论
            this.commentList = result.comments



            // 修改表情包
            this.commentList.map((item: any) => {
                // 匹配img
                let regex = /<img[^>]*>/g

                // 找到符合的字符串并修改修改
                item.content = item.content.replace(regex, function (match: any) {
                    return match.replace(/\s/, ' style="width:16px;heigth:16px" ')
                })
                return item
            })









        },
        // 获取相似专辑
        async getAlbumData() {

            let result = await contentApi.reqAlbumData(this.headerTitle, this.searchPage)
            // 专辑的图片
            this.albumList = result.album.docs
            this.search = result.kw


        },
        // 获取猜你喜欢
        async getGuessData() {
            let result = await contentApi.reqGuessLike()
            this.guessLike = result.albums
        }
    },
    getters: {},
})

export default useHeader